home *** CD-ROM | disk | FTP | other *** search
Wrap
CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) NNNNAAAAMMMMEEEE CCCCHHHHBBBBMMMMVVVV, ZZZZHHHHBBBBMMMMVVVV - Multiplies a complex vector by a complex Hermitian band matrix SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS Single precision complex Fortran: CCCCAAAALLLLLLLL CCCCHHHHBBBBMMMMVVVV ((((_u_p_l_o,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x,,,, _b_e_t_a,,,, _y,,,, _i_n_c_y)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd cccchhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt n,,,, iiiinnnntttt k,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_y,,,, iiiinnnntttt _i_n_c_y))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd cccchhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_x,,,, iiiinnnntttt _i_n_c_x,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_y,,,, iiiinnnntttt _i_n_c_y))));;;; Double precision complex Fortran: CCCCAAAALLLLLLLL ZZZZHHHHBBBBMMMMVVVV ((((_u_p_l_o,,,, _n,,,, _k,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x,,,, _b_e_t_a,,,, _y,,,, _i_n_c_y)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzhhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b_e_t_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_y,,,, iiiinnnntttt _i_n_c_y))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzhhhhbbbbmmmmvvvv((((cccchhhhaaaarrrr *_u_p_l_o,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_x,,,, iiiinnnntttt _i_n_c_x,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b_e_t_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_y,,,, iiiinnnntttt _i_n_c_y))));;;; IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN These routines are part of the SCSL Scientific Library and can be loaded using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option. The ----llllssssccccssss____mmmmpppp option directs the linker to use the multi-processor version of the library. When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is 4 bytes (32 bits). Another version of SCSL is available in which integers are 8 bytes (64 bits). This version allows the user access to larger memory sizes and helps when porting legacy Cray codes. It can be loaded by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use only one of the two versions; 4-byte integer and 8-byte integer library calls cannot be mixed. PPPPaaaaggggeeee 1111 CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) The C and C++ prototypes shown above are appropriate for the 4-byte integer version of SCSL. When using the 8-byte integer version, the variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header file should be included. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN These routines perform the following operation: _y <- _a_l_p_h_a _A_x + _b_e_t_a _y where _a_l_p_h_a and _b_e_t_a are scalars, _x and _y are _n-element vectors, and _A is an _n-by-_n Hermitian band matrix. See the NOTES section of this man page for information about the interpretation of the data types described in the following arguments. These routines have the following arguments: _u_p_l_o Character. (input) Specifies whether the upper or lower triangular part of the band matrix _A is supplied, as follows: _u_p_l_o= 'U' or 'u': the upper triangular part of _A is being supplied. _u_p_l_o= 'L' or 'l': the lower triangular part of _A is being supplied. For C/C++, a pointer to this character is passed. _n Integer. (input) Specifies the order of matrix _A. _n >= 0. _k Integer. (input) Specifies the number of superdiagonals of matrix _A. _k >= 0. _a_l_p_h_a Scalar alpha. (input) CCCCHHHHBBBBMMMMVVVV: Single precision complex. ZZZZHHHHBBBBMMMMVVVV: Double precision complex. For C/C++, a pointer to this scalar is passed. _a Array of dimension (_l_d_a,_n). (input) CCCCHHHHBBBBMMMMVVVV: Single precision complex array. ZZZZHHHHBBBBMMMMVVVV: Double precision complex array. Before entry with _u_p_l_o = 'U' or 'u, the leading (_k+1)-by-_n part of array _a must contain the upper triangular band part of the Hermitian matrix, supplied column-by-column, with the leading diagonal of the matrix in row _k+1 of the array, the first superdiagonal starting at position 2 in row _k, and so on. The top left _k-by-_k triangle of array _a is not referenced. PPPPaaaaggggeeee 2222 CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) Before entry with _u_p_l_o = 'L' or 'l', the leading (_k+1)-by-_n part of array _a must contain the lower triangular band part of the Hermitian matrix, supplied column-by-column, with the leading diagonal of the matrix in row 1 of the array, the first subdiagonal starting at position 1 in row 2, and so on. The bottom right _k-by-_k triangle of array _a is not referenced. The imaginary parts of the diagonal elements need not be set and are assumed to be 0. See the NOTES section for examples of Fortran code that transfer a band matrix from conventional full matrix storage to band storage. _l_d_a Integer. (input) Specifies the first dimension of _a as declared in the calling program. _l_d_a >= (_k+1). _x Array of dimension 1+(_n-1) * |_i_n_c_x|. (input) CCCCHHHHBBBBMMMMVVVV: Single precision complex array. ZZZZHHHHBBBBMMMMVVVV: Double precision complex array. Contains vector _x. _i_n_c_x Integer. (input) Specifies the increment for the elements of _x. _i_n_c_x must not be 0. _b_e_t_a Scalar beta. (input) CCCCHHHHBBBBMMMMVVVV: Single precision complex. ZZZZHHHHBBBBMMMMVVVV: Double precision complex. For C/C++, a pointer to this scalar is passed. _y Array of dimension 1+(_n-1) * |_i_n_c_y|. (input and output) CCCCHHHHBBBBMMMMVVVV: Single precision complex array. ZZZZHHHHBBBBMMMMVVVV: Double precision complex array. Contains vector _y. On exit, the updated vector overwrites array _y. _i_n_c_y Integer. (input) Specifies the increment for the elements of _y. _i_n_c_y must not be 0. NNNNOOOOTTTTEEEESSSS The following program segment transfers the upper triangular part of a Hermitian band matrix from conventional full matrix storage to band storage: DO 20, J = 1, N M = K + 1 - J DO 10, I = MAX( 1, J - K ), J A( M + I, J ) = MATRIX( I, J ) PPPPaaaaggggeeee 3333 CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) 10 CONTINUE 20 CONTINUE The following program segment transfers the lower triangular part of a Hermitian band matrix from conventional full matrix storage to band storage: DO 20, J = 1, N M = 1 - J DO 10, I = J, MIN( N, J + K ) A( M + I, J ) = MATRIX( I, J ) 10 CONTINUE 20 CONTINUE These routines are Level 2 Basic Linear Algebra Subprograms (Level 2 BLAS). When working backward (_i_n_c_x < 0 or _i_n_c_y < 0), this routine starts at the end of the vector and moves backward, as follows: _x(1-_i_n_c_x * (_n-1)), _x(1-_i_n_c_x * (_n-2)) , ..., _x(1) _y(1-_i_n_c_y * (_n-1)), _y(1-_i_n_c_y * (_n-2)) , ..., _y(1) DDDDaaaattttaaaa TTTTyyyyppppeeeessss The following data types are described in this documentation: TTTTeeeerrrrmmmm UUUUsssseeeedddd DDDDaaaattttaaaa ttttyyyyppppeeee Fortran: Array dimensioned _n xxxx((((nnnn)))) Array of dimensions (_m,_n) xxxx((((mmmm,,,,nnnn)))) Character CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR Integer IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision complex CCCCOOOOMMMMPPPPLLLLEEEEXXXX Double precision complex DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX C/C++: Array dimensioned _n xxxx[[[[_n]]]] PPPPaaaaggggeeee 4444 CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) CCCCHHHHBBBBMMMMVVVV((((3333SSSS)))) Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision complex ssssccccssssllll____ccccoooommmmpppplllleeeexxxx Double precision complex ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx C++ STL: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision complex ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> Double precision complex ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> Note that you can explicitly declare multidimensional C/C++ arrays provided that the array dimensions are swapped with respect to the Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran). To avoid a compiler type mismatch error in C++ (or a compiler warning message in C), however, the array should be cast to a pointer of the appropriate type when passed as an argument to a SCSL routine. SSSSEEEEEEEE AAAALLLLSSSSOOOO IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S), SSSSSSSSBBBBMMMMVVVV(3S) IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77 Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic Linear Algebra Subprograms Technical Forum. PPPPaaaaggggeeee 5555